<?php

/**
 * Operuje na pliku z polaczeniami
 * Jest fabryka ktora tworzy polaczenia i przekazuje im obsluge
 * 
 * 
 */

class ConnectionManager {

	protected $confFile = "backend.xml" ; 
	protected static $connections = array() ;

	const CONNECTION_DB = 1;
	const CONNECTION_FILE = 2;
	const CONNECTION_WEBSERVICE = 3;
	
	protected function __construct() {   }
    
	
	// TODO: Inne sposoby polaczenia
	public static function createConnection() { }
	
	// Wczytuje wszystkie polaczenia,
	// Jesli nie ma polaczenia to je tworzy ale nie laczy
	// laczy przy pierwszym wystapieniu
	public static function getAllConnections(){  }
	
	// wczytywanie connectionow z pliku
	public static function addResourceConnection( $name, $resource ) {
        	
	}

	public static function listConfiguration(  ) {
	
	}
	
	public static function addNewConnection( $name, $connectionString, $user, $password, $type = CONNECTION_DB ) {
		
	}

	public static function getConnection( $name ) {
		if( isset( self::$connections[$name] ) ) return self::$connections[$name] ;
		
			
	}
	
	public static function factory( $manager ) {
		return "Wyprodukowany obiekt polaczenia" ;
	}
	
	public static function standardQueryToSql( ORMBaseQuery $query ) {
		
		$fields =  $query->getFields();
		$class = $query->getClass();
		$table = call_user_func(array( $class, 'getTable' )) ;
		
		$str_fields = ( empty( $fields['added'] ))? '*' : implode( ', ', $fields['added'] ) ;
		
		$str_conditions = '' ;
		
		$conditions = $query->getConditions( );
		foreach( $conditions as $condition ) {
			$str_conditions .= print_r( $condition , 1);
		}
		
		return "SELECT $str_fields FROM $table WHERE $str_conditions" ;	
		
	}
	
}


?>
